package com.qiaofang.applet.service.member.service;

import com.qiaofang.applet.common.base.BaseService;
import com.qiaofang.applet.service.member.domain.Appointment;
import com.qiaofang.applet.service.member.service.dto.*;
import com.qiaofang.applet.service.property.service.dto.NewEntrustSimpleDto;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;
import java.util.Map;

/**
 * @author daiyuxiang
 */
public interface AppointmentService extends BaseService<Appointment, String> {

    List<AppointmentEmpListDto> getEmpList(AppointmentEmpQueryDto queryDto);

    List<AppointmentEmpAdminListDto> getAdminEmpList(AppointmentEmpAdminQueryDto queryDto);

    List<AppointmentEmpAdminListDto> getV20AdminEmpList(AppointmentEmpAdminQueryDto queryDto);

    void submitAppointment(AppointmentSubmitDto submitDto);

    Page<MyAppointmentListDto> getMyAppointmentList(MyAppointmentQueryDto queryDto, Pageable pageable);

    void cancelAppointment(String id);

    void affirmAppointment(AppointmentOpDto opDto);

    List<String> getLabelContentList(Map<String, String> employeeLabelMap, List<String> labelUuidList);

    Map<String, String> getEmpLabelMap();

    /**
     * 经纪人首页新预约
     * @return
     */
    List<NewEntrustSimpleDto> newAppointmentList(String employeeUniqueUuid);

    /**
     * 获取所有预约信息
     * @param appointmentQueryDto 查询条件
     * @param pageable 分页参数
     * @return
     */
    Page<AppointmentResponseDto> getAppointmentList (AppointmentQueryDto appointmentQueryDto,Pageable pageable);

    /**
     * 根据修改预约信息
     * @param appointmentEditDto
     */
    void editAppointment (AppointmentEditDto appointmentEditDto);
}
